package com.ccod.mapper.mapper.core.chain;

/**
 * @author ccod
 * @date 2020-11-10 22:47
 **/
public interface CoreServiceProcess<R> {

    /**
     * 执行链
     * @param context
     */
    void process(R context) throws Exception;

    /**
     * 前置校验
     * @param context
     */
    default boolean preCheck(R context){return true;}

    /**
     * process完成后执行
     * @param context
     */
    default void complete(R context){}

    /**
     * 任务异常时执行
     * @param ex
     */
    default void hasError(Throwable ex){}

    /**
     * 是否中断后续process
     */
    default boolean isInterrupt(R context){return false;};

}
